/*
 * SelfComputeThermalExpansionEigenStrain.h
 *
 *  Created on: 2018年1月9日
 *      Author: liuxiao
 */


#include "ComputeThermalExpansionEigenstrainBase.h"
#include "LinearInterpolation.h"
class SelfComputeThermalExpansionEigenStrain;

template<>
InputParameters validParams<SelfComputeThermalExpansionEigenStrain>();

/**
 * ComputeThermalExpansionEigenStrain computes an Eigenstrain corresponding to the
 * thermal expansion of a material.
 */
class SelfComputeThermalExpansionEigenStrain : public ComputeThermalExpansionEigenstrainBase
{
public:
	SelfComputeThermalExpansionEigenStrain(const InputParameters & parameters);

protected:
	 virtual void computeThermalStrain(Real & thermal_strain, Real & instantaneous_cte) override;

  const VariableValue & _temperature;
  std::vector<Real>_thermal_expansion_coeff_list;
  std::vector<Real>_thermal_expansion_coeff_T_list;

  LinearInterpolation _thermal_expansion_coeff_T;

  MaterialProperty<Real>  & _thermal_expansion_coeff;
};






